package com.egg.mall.service.sku.order;

import com.egg.common.mybatis.service.IBaseService;
import com.egg.mall.entity.sku.orders.SkuOrders;
import com.egg.mall.enums.OrderStateEnum;
import com.egg.mall.model.request.OrderPostOrPut;

import java.io.Serializable;


/**
 * @author east
 * @since 2022-08-27
 */
public interface ISkuOrdersService extends IBaseService<SkuOrders> {


    /**
     * 订单新增并拉起支付
     *
     * @param add
     * @return
     */
    String addAndPay(OrderPostOrPut add);

    /**
     * 拉起支付
     *
     * @param orderId    订单ID
     * @param payType    支付类型
     * @param clientType 客户端类型
     * @return
     */
    String pay(Serializable orderId, String payType, String clientType);

    /**
     * 拉起支付
     *
     * @param skuOrders      订单
     * @param payType    支付类型
     * @param clientType 客户端类型
     * @return
     */
    String pay(SkuOrders skuOrders, String payType, String clientType);

    /**
     * 订单取消
     *
     * @param orderId
     */
    void timeout(Serializable orderId);

    /**
     * 订单支付成功
     *
     * @param orderId
     */
    void paySuccess(Serializable orderId);

    /**
     * 修改订单状态
     *
     * @param orderId
     * @param nextState
     */
    void editState(Serializable orderId, OrderStateEnum nextState);
}
